package templateExcel;

import lombok.Setter;

import java.util.Map;

//一维数组
@Setter
public class LinearArrayQuote extends TemplateQuote {

    private String quote;

    //开始位置表达式
    private String startExpression;

    private String lenExpression;


    //TODO 需要

    //开始位置
    private int start;

    //长度
    private int len;

    //第一维度是否是纵向的
    private boolean firstIsVertical = true;

    @Override
    public String getQuoteName() {

        if (quote == null) {
            quote = "__liner_array_" + IdFactory.id();
        }

        return quote;
    }

    @Override
    public void bind(Map<String, Object> values) {

    }

    @Override
    public Object getValue(Map<String, Object> values, int i, int j) {

        //i用于遍历第一个维度
        if (i < 0) {
            i = 0;
        }

        //j用于遍历第二个维度
        if (j < 0) {
            j = 0;
        }

        Object o = values.get(name);

        //如果是一个对象数组
        if (o instanceof Object[]) {

            Object[] array = (Object[]) o;

            //如果第一个是横向的
            if (firstIsVertical) {
                if (array.length > i) {
                    return array[i];
                }
            } else {
                if (array.length > j) {
                    return array[j];
                }
            }


        } else {
            System.err.println(name + " 不是一维数组,不满足预期");
        }

        return null;
    }


    @Override
    public int maxI(Map<String, Object> values) {

        if (firstIsVertical) {
            Object o = values.get(name);
            if (o instanceof Object[]) {
                Object[] array = (Object[]) o;
                return array.length;
            } else {
                System.err.println(name + " 不是一维数组,不满足预期");
            }
        }

        return 0;
    }

    @Override
    public int maxJ(Map<String, Object> values) {
        if (!firstIsVertical) {
            Object o = values.get(name);
            if (o instanceof Object[]) {
                Object[] array = (Object[]) o;
                return array.length;
            } else {
                System.err.println(name + " 不是一维数组,不满足预期");
            }
        }
        return 0;
    }

}
